目的
读取环境变量 → 全模块可读取
pnpm i @nestjs/config
/.env
APP_ENV=development
APP_PORT=3000
DB_URL=mongodb://mongo:27017
DB_NAME=nest-server
DB_USER=xxxx
DB_PASS=123456
DB_ENTITY_NAME=mongo
DB_SYNCHRONIZE=false
DB_LOGGING=true
/src/shared/configs/configuration.ts
export default (): any => ({
env: process.env.APP_ENV,
port: process.env.APP_PORT,
database: {
url: process.env.DB_URL,
name: process.env.DB_NAME,
user: process.env.DB_USER,
pass: process.env.DB_PASS,
synchronize: process.env.DB_SYNCHRONIZE,
logging: process.env.DB_LOGGING
},
});
/src/configs/module-options.ts
// import * as Joi from '@hapi/joi';
import { ConfigModuleOptions } from '@nestjs/config/dist/interfaces';
import configuration from './configuration';
export const configModuleOptions: ConfigModuleOptions = {
envFilePath: '.env',
load: [configuration],
};
/src/shared.module.ts
import { Module } from '@nestjs/common';
import { SystemService } from './system.service';
import { ConfigModule, ConfigService } from '@nestjs/config';
import { configModuleOptions } from './configs/module-options';
@Module({
// 注入Config
imports: [
ConfigModule.forRoot(configModuleOptions),
],
// 暴露Config
exports: [
ConfigModule,
]
})
export class ShareModule { }
使用 ConfigService
export class UserController {
constructor(
private readonly userService: UserService,
private readonly configService: ConfigService
) { }
create(@Body() createUserDto: CreateUserDto) {
// ....
console.log('ENV:URL:', this.configService.get<string>('database.url'))
// ....
}
}